Real-time conversations between conversation participants via their computing devices are becoming increasingly common. Such real-time conversations require that the participants be present at their computer devices (e.g., personal digital assistants) and able to respond when a communication is received. Common forms of real-time conversation are provided by instant messaging services, telephone systems, conferencing systems, and so on. An instant messaging service allows participants to send messages and have them received within a second or two by the other participants in the conversation. The receiving participants can then send responsive messages to the other participants in a similar manner. To be effective, a real-time conversation relies on the participants becoming aware of, reviewing, and responding to received messages very quickly. This quick response is in contrast to conventional electronic mail systems in which the recipients of electronic mail messages respond to messages at their convenience.
Instant messaging services require a networking protocol to establish and manage communications between participants. These services may use various mechanisms to establish sessions, such as a “session initiation protocol” (“SIP”). SIP is an application-layer control protocol that computer systems can use to discover one another and to establish, modify, and terminate sessions. SIP is an Internet proposed standard. Its specification, “RFC 3261,” is available at <http://www.ietf.org/rfc/rfc3261.txt>. A specification for extensions to SIP relating to event notifications, “RFC 3265,” is available at <http://www.ietf.org/rfc/rfc3265.txt>. Both of these specifications are incorporated herein in their entirety by reference.
A SIP network comprises entities that can participate in a dialog as a client, server, or both. SIP supports four types of entities: user agent, proxy server, redirect server, and registrar. User agents initiate and terminate sessions by exchanging messages with other SIP entities. A user agent can be a user agent client (“UAC”), which is a device that initiates SIP requests, or a user agent server (“UAS”), which is a device that receives SIP requests and responds to such requests. As examples, “IP-telephones,” personal digital assistants, and any other type of computing device may be user agents. A device can be a UAC in one dialog and a UAS in another, or may change roles during the dialog. A proxy server is an entity that acts as a server to clients and a client to servers. In so doing, proxy servers intercept, interpret, or forward messages between UACs and UASs. A redirect server accepts a SIP request and generates a response directing the UAC that sent the request to contact an alternate network resource. A registrar is a server that accepts registration information from user agents and informs a location service of the received registration information.
SIP supports two message types: requests, which are sent from a UAC to a UAS, and responses, which are sent from a UAS to a UAC when responding to a request. A SIP message is composed of three parts. The first part of a SIP message is a “request line,” which includes fields to indicate a message method (e.g., INVITE) and a request URI that identifies the user or service to which the request is being directed. The second part of a SIP message comprises headers whose values are represented as name-value pairs. The third part of a SIP message is the message's body, which is used to describe the session to be initiated or contain data that relates to the session. Message bodies may appear in requests or responses.
A Voice over Internet Protocol (“VoIP”) telephone call can be initiated by a caller's device sending a SIP INVITE request identifying the telephone number of the callee to be called. When the callee's device receives the invitation, it can notify the callee of the invitation and send a SIP SESSION-In-PROGRESS message to the caller. When the callee answers, the callee's device responds to the INVITE request with a SIP 200 OK message. The conversation between the caller and callee can then be transmitted in packets using the Real-Time Protocol (“RTP”). When the caller hangs up, the caller's device sends a SIP BYE request to the callee to terminate the call.
Traditional telephone systems provide no information about a call until the call is answered. When the call is answered, the caller and callee typically exchange names to identify themselves. Caller identification systems have been used to provide a callee with some information about the call before it is answered. When a call is received, the phone number of the originating telephone may be provided. A telephone that supports caller ID can display a telephone number or a name that telephone number maps to the callee during ring back. The callee can then decide whether to answer the phone based on the caller ID information. Unfortunately, a callee may not be able to make an informed decision relating to an incoming telephone call simply based on caller ID information.
Some telephone systems, such as call-center telephone systems, may use the caller ID information to retrieve additional information about the caller. For example, the telephone system may access a customer database and retrieve the current account status of the caller. When a customer service representative at the call center answers the telephone call, the current account information can be displayed to enable the representative to assist the caller. Unfortunately, a call center telephone system may not be able to know the true reason for the call and the representative may not be able to retrieve the precise information that would be needed to assist the caller until the conversation is underway.